<?php

require_once '../dlo/UsuarioDLO.php';
require_once '../dlo/GrupoDLO.php';
require_once '../dlo/EspacoCulturalDLO.php';

class UsuarioController {

    private $cod_usuario;
    private $cod_grupo;
    private $cod_espaco;
    private $nome;
    private $login;
    private $senha;
    private $row_id;
    private $campo_id;
    private $campo_valor;
    private $tipo_listagem;

    function __construct(&$cod_usuario, &$cod_grupo, &$cod_espaco, &$nome, &$login, &$senha, &$row_id, &$campo_id, &$campo_valor, &$tipo_listagem) {
        $this->cod_usuario = &$cod_usuario;
        $this->cod_grupo = &$cod_grupo;
        $this->cod_espaco = &$cod_espaco;
        $this->nome = &$nome;
        $this->login = &$login;
        $this->senha = &$senha;
        $this->row_id = &$row_id;
        $this->campo_id = &$campo_id;
        $this->campo_valor = &$campo_valor;
        $this->tipo_listagem = &$tipo_listagem;
    }

    public function cadastrar() {
        try {
            $dlo = &GrupoDLO::getInstance();
            $dlo->cadastrarUsuario($this->cod_grupo, $this->nome, $this->login, $this->senha);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function alterar() {
        try {
            $dlo = &GrupoDLO::getInstance();
            $dlo->alterarUsuario($this->cod_grupo, $this->row_id, $this->campo_id, $this->campo_valor);
            echo $this->campo_valor;
        } catch (Exception $e) {
            if ($e->getMessage() != 'no_action') {
                echo "Exception: " . $e->getMessage();
            } else {
                echo $this->campo_valor;
            }
        }
    }

    public function excluir() {
        try {
            $dlo = &GrupoDLO::getInstance();
            $dlo->excluirUsuario($this->cod_grupo, $this->cod_usuario);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function listar() {
        try {
            $dlo = &GrupoDLO::getInstance();
            $lista = &$dlo->listarUsuarios($this->cod_grupo);
            if ($this->tipo_listagem == 'tabela') {
                foreach ($lista as $row) {
                    echo '<tr id="' . $row["cod_usuario"] . '"><td class="cell_editable" id="nome" title="Clique duas vezes para editar">' . $row["nome"] . '</td>';
                    echo '<td class="cell_editable" id="login" title="Clique duas vezes para editar">' . $row["login"] . '</td>';
                    //echo '<td id="senha" title="Clique duas vezes para editar">' . $row["senha"] . '</td>';
                    echo '<td width="10px" id="' . $row["cod_usuario"] . 'bt_excluir"><div class="ui-state-default ui-corner-all"  style="float: left">';
                    echo '<a href="javascript: void(0)">';
                    echo '<span id="trash" class="ui-icon ui-icon-trash" onclick="showConfirm(\'Confirma exclusão?\',function() {manutencaoUsuario(\'excluir\',' . $row["cod_usuario"] . ');$(this).dialog(\'close\');})" title="Excluir"></span>';
                    echo '</a></div></td></tr>';
                }
            } elseif ($this->tipo_listagem == 'xml') {
                $xml = new XMLWriter();
                $xml->openMemory();
                $xml->startDocument('1.0', 'UTF-8');
                $xml->startElement("lista");
                foreach ($lista as $usuario) {
                    $xml->startElement("usuario");
                    $xml->writeElement('cod_usuario', $usuario['cod_usuario']);
                    $xml->writeElement('nome', $usuario['nome']);
                    $xml->writeElement('login', $usuario['login']);
                    $xml->endElement();
                }
                $xml->endElement();
                header('Content-type: text/xml');
                print $xml->outputMemory(true);
            }
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function validar() {
        try {
            $dlo = &UsuarioController::getInstance();
            $dlo->validar($this->login, $this->senha);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function cadastrarEspaco() {
        try {
            $dlo = &UsuarioDLO::getInstance();
            $dlo->cadastrarEspaco($this->cod_usuario, $this->cod_espaco);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function excluirEspaco() {
        try {
            $dlo = &UsuarioDLO::getInstance();
            $dlo->excluirEspaco($this->cod_usuario, $this->cod_espaco);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function listarEspaco() {
        try {
            $dlo = &UsuarioDLO::getInstance();
            $lista = &$dlo->listarEspacos($this->cod_usuario);
            if ($this->tipo_listagem == 'tabela') {
                foreach ($lista as $row) {
                    echo '<tr><td>' . $row["nome"] . '</td>';
                    echo '<td>' . $row["login"] . '</td>';
                    echo '<td width="10px" id="espaco_' . $row["cod_espaco"] . 'bt_excluir"><div class="ui-state-default ui-corner-all"  style="float: left">';
                    echo '<a href="javascript: void(0)">';
                    echo '<span id="trash" class="ui-icon ui-icon-trash" onclick="showConfirm(\'Confirma exclusão?\',function() {manutencaoUsuario(\'excluir_espaco\',' . $row["cod_espaco"] . ');$(this).dialog(\'close\');})" title="Excluir"></span>';
                    echo '</a></div></td></tr>';
                }
            } elseif ($this->tipo_listagem == 'xml') {
                $xml = new XMLWriter();
                $xml->openMemory();
                $xml->startDocument('1.0', 'UTF-8');
                $xml->startElement("lista");
                foreach ($lista as $espaco) {
                    $xml->startElement("espaco");
                    $xml->writeElement('cod_espaco', $espaco['cod_espaco']);
                    $xml->writeElement('nome', $espaco['nome']);
                    $xml->endElement();
                }
                $xml->endElement();
                header('Content-type: text/xml');
                print $xml->outputMemory(true);
            }
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

}

$controller = new UsuarioController($_POST['cod_usuario'], $_POST['cod_grupo'], $_POST['cod_espaco'], $_POST['nome'], $_POST['login'], $_POST['senha'], $_POST['row_id'], $_POST['campo_id'], $_POST['campo_valor'], $_POST['tipo_listagem']);
if ($_POST['acao'] == 'validar') {
    $controller->validar();
} elseif ($_POST['acao'] == 'cadastrar') {
    $controller->cadastrar();
} elseif ($_POST['acao'] == 'alterar') {
    $controller->alterar();
} elseif ($_POST['acao'] == 'excluir') {
    $controller->excluir();
} elseif ($_POST['acao'] == 'listar') {
    $controller->listar();
} elseif ($_POST['acao'] == 'cadastrar_espaco') {
    $controller->cadastrarEspaco();
} elseif ($_POST['acao'] == 'excluir_espaco') {
    $controller->excluirEspaco();
} elseif ($_POST['acao'] == 'listar_espaco') {
    $controller->listarEspaco();
}
?>
